草庐IT

Ruby Regexp : + vs *. 特殊行为?

全部标签

ruby - 数组分配与追加行为

在我看来,以下行为就像assign方法正在按值处理visited,而append方法将其视为引用:classMyClassdefassign(visited)visited+=["A"]enddefappend(visited)visited[]instance.append(visited)visited#=>["A"]有人可以解释这种行为吗?这不是关于Ruby是否支持按引用传递或按值传递的问题,而是关于下面提供的示例,以及为什么两个据称执行相同操作的方法表现出不同行为的问题。 最佳答案 您在第一个方法中重新定义了局部变量。这是一

ruby-on-rails - 用于验证仅包含字符(非特殊字符)、空格和数字的字符串的正则表达式

我正在使用RubyonRails3.0.9,我想验证一个只能包含字符(不是特殊字符-不区分大小写)、空格和数字的字符串。在我的验证码中我有:validates:name,:presence=>true,:format=>{:with=>regex}#HereIshouldsetthe'regex'我应该如何声明正则表达式? 最佳答案 有几种方法可以做到这一点。如果你只想允许ASCII单词字符(没有像Ê这样的重音字符或来自其他字母表的字母,如Ӕ或ל),使用这个:/^[a-zA-Z\d\s]*$/如果您只想为Ruby1.8.7允许来自其

ruby-on-rails - 冒号前缀和附加之间的区别(:item vs item:)

在ruby​​中追加和前置冒号有什么区别?例子:#Inrailsyouoftenhavethingslikethis:has_many:models,dependent::destroy为什么dependent:有一个冒号,而:models和:destroy有一个冒号?有什么区别? 最佳答案 这是Ruby1.9中的新语法,用于定义散列中作为键的符号。前置和附加的:都定义了一个symbol,但后者仅在散列初始化期间有效。你可以想到一个symbol作为轻量级字符串常量。相当于:dependent=>:destroy在1.9之前,散列是使

ruby-on-rails - Rails 4.2.0.beta2 中的奇怪行为 - 这是一个错误吗?

在每隔窗口重新加载时出现500错误。assets/application-CACHE-.js未找到。不知道是什么原因造成的。开发环境。使用Unicorn作为我的网络服务器。有人知道这是什么吗?17:07:13web.1|127.0.0.1--[15/Oct/2014:17:07:13-0400]"GET/blogHTTP/1.1"200-0.288517:07:13web.1|127.0.0.1--[15/Oct/2014:17:07:13-0400]"GET/about-64845c436e75ac587deec98177291d4e.css?body=1HTTP/1.1"304-0

ruby - 为什么我的带有 ANSI 颜色代码的 IRB 提示通过复制/粘贴弄乱了翻页/翻页行为?

我添加到我的.irbrc:IRB.conf[:PROMPT].reverse_merge!(:RAILS_ENV=>{:PROMPT_I=>"#{current_app}#{rails_env}#{prompt}",:PROMPT_N=>"#{current_app}#{rails_env}#{prompt}",:PROMPT_S=>nil,:PROMPT_C=>"?>",:RETURN=>"=>%s\n"})IRB.conf[:PROMPT_MODE]=:RAILS_ENV如果我这样做:current_app="\e[31mfoo_bar_app\e[0m"rails_env="\e

ruby - 我如何获得 RSpec 的共享示例,例如 Ruby Test::Unit 中的行为?

在RSpecforTest::Unittests中是否有类似于shared_examples的插件/扩展? 最佳答案 如果您正在使用rails(或只是active_support),请使用Concern.require'active_support/concern'moduleSharedTestsextendActiveSupport::Concernincludeddo#Thisway,testnamecanbeastring:)test'bananabananabanana'doasserttrueendendend如果您不使

ruby - 与 block 一起使用时,ruby Hash#merge 的行为是什么

它似乎没有被记录很多:hsh.merge(other_hash){|key,oldval,newval|block}→a_hashhttp://ruby-doc.org/core/classes/Hash.html#M002880 最佳答案 正如预期的那样,生成的散列将包含一个block返回的值,该block针对存在于两个正在合并的散列中的每个键:>>h1={:a=>3,:b=>5,:c=>6}=>{:a=>3,:b=>5,:c=>6}>>h2={:a=>4,:b=>7,:d=>8}=>{:a=>4,:b=>7,:d=>8}>>h1

Ruby:转义字符串中的特殊字符

我正在尝试编写一个与PHP中的mysqli_real_escape_string相同的方法。它接受一个字符串并转义任何“危险”字符。我一直在寻找一种可以为我做到这一点的方法,但我找不到。所以我想自己写一个。这是我目前所拥有的(我在Rubular.com测试了模式并且它有效):#Findsthefollowingcharactersandescapesthembyprecedingthemwithabackslash.Characters:'".*/\-defescape_characters_in_string(string)pattern=%r{(\'|\"|\.|\*|\/|\-|

ruby - `var = something rescue nil` 行为

在Ruby中,您可以在赋值结束时编写rescue以捕获可能出现的任何错误。我有一个函数(如下:a_function_that_may_fail),如果不满足某些条件,让它抛出错误很方便。以下代码运行良好post={}#OtherHashstuffpost['Caption']=a_function_that_may_failrescuenil但是,如果函数失败,我什至不希望设置post['Caption']。我知道我能做到:beginpost['Caption']=a_function_that_may_failrescueend但这感觉有点过分-有更简单的解决方案吗?

ruby-on-rails - 使用 utf8 字符的 ruby​​ 正则表达式在 rails 中的奇怪行为

使用非标准utf-8字符时,我的验证正则表达式之一出现问题。因此,我进行了一些实验,发现ruby​​正则表达式在rails环境或普通ruby​​中表现不同。我用中文字符串在这里发布我的实验。在ruby中“纯”:string="運動會"putsstring[/\A[\w]*\z/]=>match"運動會"-ok在rails上:#coding:utf-8task:test=>:environmentdostring="運動會"putsstring[/\A[\w]*\z/]end$raketest=>nothing-notok如果我省略#coding:utf-8,它将带有invalidmul